package com.guigu.guliorder.controller;


import com.guigu.gulicommon.entity.pojo.res.Res;
import com.guigu.guliorder.entity.MqMessage;
import com.guigu.guliorder.entity.dto.InsertMqMessageBatchDto;
import com.guigu.guliorder.entity.dto.SelectMqMessagePagesDto;
import com.guigu.guliorder.entity.dto.UpdateMqMessageDto;
import com.guigu.guliorder.service.IMqMessageService;
import lombok.extern.log4j.Log4j2;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

import javax.validation.Valid;
import javax.validation.constraints.NotNull;
import java.util.ArrayList;

import static com.guigu.gulicommon.constant.CheckParametersConstant.MQ_MESSAGE_ID_CANNOT_BE_NULL;

/**
 * mq消息前端控制器
 * </p>
 *
 * @author 陈俊杰
 * @since 2024-08-15
 */
@RestController
@Log4j2
@Validated
@RequestMapping("/mq-message")
public class MqMessageController {
    @Autowired
    private IMqMessageService mqMessageService;

    /**
     * 批量新增MQ消息(通用)
     *
     * @param dto 添加MQ消息的参数
     * @return vo 添加MQ消息的信息
     */
    @PostMapping
    public Res<MqMessage> addBatch(@Valid @RequestBody ArrayList<InsertMqMessageBatchDto> dto) {
        log.info("批量新增MQ消息(通用)接口入参为:[{}]", dto);
        return mqMessageService.addBatch(dto);
    }

    /**
     * 批量删除MQ消息(通用)
     *
     * @param ids 批量删除MQ消息的id集合
     * @return vo 被删除的MQ消息的信息
     */
    @DeleteMapping
    public Res<MqMessage> removeByIdsBatch(
            @RequestParam(value = "ids")
            @NotNull(message = MQ_MESSAGE_ID_CANNOT_BE_NULL)
            String[] ids
    ) {
        log.info("批量删除MQ消息(通用)接口入参为:[{}]", (Object) ids);
        return mqMessageService.deleteByIdsBatch(ids);
    }

    /**
     * 修改MQ消息(通用)
     *
     * @param dto 修改MQ消息的参数
     * @return vo 修改后MQ消息的信息
     */
    @PutMapping
    public Res<MqMessage> update(@Valid @RequestBody UpdateMqMessageDto dto) {
        log.info("修改MQ消息(通用)接口入参为:[{}]", dto);
        return mqMessageService.update(dto);
    }

    /**
     * 分页查询MQ消息详情信息(通用)
     *
     * @param pagesDto 查询MQ消息的参数
     * @return vo MQ消息详情的分页
     */
    @GetMapping
    public Res<MqMessage> findPages(SelectMqMessagePagesDto pagesDto) {
        log.info("分页查询MQ消息(通用)接口入参为:[{}]", pagesDto);
        return mqMessageService.findPages(pagesDto);
    }


}
